package com.ruoyi.fee.service;

import com.ruoyi.common.core.dto.BillPayStatusDTO;
import com.ruoyi.common.core.dto.PayRequestDTO;
import com.ruoyi.common.core.dto.PayResponseDTO;
import com.ruoyi.common.core.dto.PayStatusDTO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 支付服务接口
 */
public interface PayService {

    /**
     * 创建支付订单
     * @param request 支付请求参数
     * @return 支付响应（包含调起支付的参数）
     */
    PayResponseDTO createOrder(PayRequestDTO request);



    String handleWechatNotify(String xmlData);

    String handleAlipayNotify(HttpServletRequest request);

    /**
     * 查询支付状态
     * @param outTradeNo 商户订单号
     * @return 支付状态信息
     */
    PayStatusDTO queryPayStatus(String outTradeNo);

    /**
     * 关闭未支付的订单
     * @param outTradeNo 商户订单号
     */
    void closeOrder(String outTradeNo);

    List<BillPayStatusDTO> batchQueryBillStatus(List<Long> billIds);
}